// #include <bits/stdc++.h>
// using namespace std;
// typedef long long ll;
// typedef pair<int, int> pii;
// const int MOD = 1e9 + 7;
// const int N = 2010;

// int gcd(int a, int b)
// {
//     return b ? gcd(b, a % b) : a;
// }

// ll qui(ll a, ll b)
// {
//     ll res = 1;
//     while (b)
//     {
//         if (b & 1)
//             res = res * a % MOD;
//         b >>= 1;
//         a = a * a % MOD;
//     }
//     return res;
// }

// ll fac[N], inv_fac[N];
// ll S[N][N];

// void init()
// {
//     fac[0] = 1;
//     for (int i = 1; i < N; i++)
//         fac[i] = fac[i - 1] * i % MOD;
//     inv_fac[N - 1] = qui(fac[N - 1], MOD - 2);
//     for (int i = N - 1; i > 0; i--)
//         inv_fac[i - 1] = inv_fac[i] * i % MOD;
//     S[0][0] = 1;
//     for (int i = 1; i < N; ++i)
//     {
//         for (int j = 1; j < N; ++j)
//         {
//             S[i][j] = (j * S[i - 1][j] % MOD + S[i - 1][j - 1]) % MOD;
//         }
//     }
// }

// ll comb(int a, int b)
// {
//     return fac[a] * inv_fac[b] % MOD * inv_fac[a - b] % MOD;
// }

// struct custom_hash
// {
//     static uint64_t splitmix64(uint64_t x)
//     {
//         x ^= x << 13;
//         x ^= x >> 7;
//         x ^= x << 17;
//         return x;
//     }
//     size_t operator()(uint64_t x) const
//     {
//         static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
//         return splitmix64(x + FIXED_RANDOM);
//     }
// };
// int mi2[20];
// void solve()
// {
//     string s;
//     cin >> s;
//     int t0 = 0, t1 = 0;
//     ll ans = 0;
//     for (int i = 0; i < s.size(); i++)
//     {
//         if (s[i] == '0' && t1 == 0)
//         {
//             if (i > 0 && s[i - 1] == '1')
//                 ans++;
//             t0++;
//         }
//         else if (s[i] == '1')
//             t1++;
//         else
//         {
//             ans += t1;
//             int k = i;
//             int j = 2;
//             for (j = 2; j <= t1; j++)
//             {
//                 if (mi2[j] - j - 1 <= t0)
//                     ans++;
//                 else
//                     break;
//             }
//             j = t1 + 1;
//             while (k < s.size() && s[k] == '0')
//             {
//                 t1++;
//                 k++;
//             }
//             int cnt = 1;
//             for (; j <= t1; j++)
//             {
//                 if (mi2[j] - j - mi2[cnt] <= t0 && mi2[j] - j - mi2[cnt] > 0)
//                 {
//                     ans++;
//                 }
//                 else if (mi2[j] - j + mi2[cnt] - 2 > t0)
//                     break;
//                 cnt++;
//             }
//             t1 = 0, t0 = 0;
//             i--;
//         }
//         // cout << ans << endl;
//     }
//     // cout << ans << endl;
//     if (s[s.size() - 1] == '1')
//     {
//         ans += (t1);
//         for (int j = 2; j <= t1; j++)
//         {
//             if (mi2[j] - j - 1 <= t0)
//                 ans++;
//             else
//                 break;
//         }
//     }
//     cout << ans << endl;
// }

// int main()
// {
//     mi2[0] = 1;
//     for (int i = 1; i < 20; i++)
//         mi2[i] = mi2[i - 1] * 2;
//     int t;
//     cin >> t;
//     while (t--)
//         solve();
//     return 0;
// }

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int MOD = 1e9 + 7;
const int N = 2010;

int gcd(int a, int b)
{
    return b ? gcd(b, a % b) : a;
}

ll qui(ll a, ll b)
{
    ll res = 1;
    while(b)
    {
        if(b & 1)res = res * a % MOD;
        b >>= 1;
        a = a * a % MOD;
    }
    return res;
}

ll fac[N], inv_fac[N];
ll S[N][N];

void init()
{
    fac[0] = 1;
    for(int i = 1; i < N; i++)
        fac[i] = fac[i - 1] * i % MOD;
    inv_fac[N - 1] = qui(fac[N - 1], MOD - 2);
    for(int i = N - 1; i > 0; i--)
        inv_fac[i - 1] = inv_fac[i] * i % MOD;
    S[0][0] = 1;
    for (int i = 1; i < N; ++i) {
        for (int j = 1; j < N; ++j) {
            S[i][j] = (j * S[i - 1][j] % MOD + S[i - 1][j - 1]) % MOD;
        }
    }
}

ll comb(int a, int b)
{
    return fac[a] * inv_fac[b] % MOD * inv_fac[a - b] % MOD;
}

struct custom_hash {
	static uint64_t splitmix64(uint64_t x) {
		x ^= x << 13;
		x ^= x >> 7;
		x ^= x << 17;
		return x; 
	}
	size_t operator () (uint64_t x) const {
		static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count(); // 时间戳
		return splitmix64(x + FIXED_RANDOM);
	}
};

void solve()
{
    string s;
    cin >> s;
    int n = s.size();
    vector<int> sum(n);
    int t = 0;
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '0') t++;
        else {
            sum[i] = t;
            t = 0;
        }
    }
    int ans = 0;
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '0') continue;
        ll t = 0;
        for(int j = i; j < min(n, i + 20); j++)
        {
            t *= 2;
            if(s[j] == '1')
                t++;
            if(t <= sum[i] + (j - i + 1)) ans++;
        }    
    }
    cout << ans << endl;
}

int main()
{
    int t;
    cin >> t;
    while(t--) solve();
    return 0;
}